﻿/* 自定义的游聚平台的通用热键模块,指定一个热键中断切换键(游聚常用),再指定space键替代的按钮(因为space在游聚可能有别的作用)
  需要新建实例使用
  By setycyas @2023-02-01
*/
class MyXZone {

  ;静态常量,指定对应的exe名称
  static EXE := "x-zone.exe"
  
  ;实例变量
  _spaceInsteadKey := "" ;space键替换哪个按钮

  ;指定热键切换和空格替代键(可留空省略)
  __New(toggleKey := "numpad2", spaceInsteadKey := ""){
    local wTitle := "ahk_exe " . MyXZone.EXE ;窗口标题
    local funcSpace ;绑定用函数对象
    this._spaceInsteadKey := spaceInsteadKey ;space键替换哪个按钮
    ;绑定热键
    Hotkey, IfWinActive, %wTitle%
    Hotkey, ~%toggleKey%, __MyXZone_pauseToggle
    Hotkey, IfWinActive
    if (spaceInsteadKey != ""){
      funcSpace := this._space.bind(this)
      Hotkey, IfWinActive, %wTitle%
      Hotkey, space, % funcSpace
      Hotkey, IfWinActive
    }
    
  }

  /* 私有函数,用于绑定各个按键的响应 
  */

  ;space键对于函数
  _space(){
    local key1 := this._spaceInsteadKey
    send, {%key1% down}
    sleep, 50
    send, {%key1% up}
  }

}

;热键中断切换,写在类函数当中是无法识别的!可能以为有参数,即使bind了也不行,只好写在外面
__MyXZone_pauseToggle(){
  suspend, toggle
}

/* 测试 

*/
new MyXZone("numpad2", "p")
